package com.turing.post.cardmanagement.util;

import java.math.BigInteger;
import java.util.Date;
import java.util.List;

import javax.ejb.Local;
import javax.ejb.Remote;

import com.turing.post.util.PCPSApplicationException;

/**
 * 发卡商机构出入库明细管理
 * 
 * @author ys
 * 
 */

@Remote
@Local
public interface IssueCardStockDetailDao {
	/**
	 * 插入
	 * 
	 * @param IssueCardStockDetail
	 *            对象
	 * @throws PCPSApplicationException
	 */
	public void insert(IssueCardStockDetail IssueCardStockDetail)
			throws PCPSApplicationException;

	/**
	 * 联合查询，发卡商机构号，批次号，交易日期，交易类型，卡种类，卡面值,页码
	 * 
	 * @param IssueBranchNo
	 *            发卡商机构号
	 * @param batchNo
	 *            批次号
	 * @param TranDate
	 *            交易日期
	 * @param TranType
	 *            交易类型
	 * @param CardClassicId
	 *            卡种类ID
	 * @param CardParValueId
	 *            卡面值ID
	 * @param page
	 *            页码
	 * @return IssueCardStockDetail对象集合
	 */
	public List<IssueCardStockDetail> getIssueCardStockDetailList(
			String IssueBranchNo, String batchNo, String starttime,
			String endtime, String TranType, BigInteger cardFaceId,
			String startSeqNo, String endSeqNo, Integer page);

	/**
	 * 联合查询，发卡商机构号，批次号，交易日期，交易类型，卡种类，卡面值
	 * 
	 * @param IssueBranchNo
	 *            发卡商机构号
	 * @param batchNo
	 *            批次号
	 * @param TranDate
	 *            交易日期
	 * @param TranType
	 *            交易类型
	 * @param CardClassicId
	 *            卡种类
	 * @param CardParValueId
	 *            卡面值
	 * 
	 * @return 记录条数
	 */
	public Integer getIssueCardStockDetailCount(String IssueBranchNo,
			String batchNo, String starttime, String endtime, String TranType,
			BigInteger cardFaceId, String startSeqNo, String endSeqNo);

	/**
	 * 按日汇总某发卡商某日分支机构卡库存日结数据
	 * 
	 * @param issueCompanyNo
	 *            发卡商NO
	 * @param tranDate
	 *            帐务日期
	 * @return
	 */
	public List<Object[]> sumAllIssueCardStockDaySettlementByTranDate(
			String issueCompanyNo, Date tranDate);

	/**
	 * @根据IoOrderId,IssueBranchNo,TranDate查询明细
	 * @param
	 * @return 对象
	 */
	public IssueCardStockDetail getIssueCardStockDetailByDatil(
			BigInteger IoOrderId, String IssueBranchNo, Date TranDate);
	
	/**
	 * 
	 * @param CardStartSeqNo
	 * @param CardEndSeqNo
	 * @return 对象
	 */
	public IssueCardStockDetail getIssueCardStockDetailByCardSeqNo(String CardStartSeqNo,
			String CardEndSeqNo);

	//
	// /**
	// * 卡-5 卡库存结余表
	// *
	// * @param webInput
	// * @param tranDate
	// * @return
	// */
	// public List<Object[]> getCardStockDaySettlementReportByCondition(
	// PCPSWebInput webInput, String saleBranchNo, String isSingle,
	// String startTime, String endTime);

	public void insertIssueCardStockDetailList(String issueBranchNo,
			String batchNo, String saleBranchNo, BigInteger UserId, Date date,
			BigInteger faceid, String cardseqno, String endseqno, Integer count)
			throws PCPSApplicationException;
}
